SND13 - siMonitorSource ÉZÉåÉNÉ^ (98 îN 4 åé 12 ì˙)
Q: siMonitorAvailable Ç®ÇÊÇ— siMonitorSource ÉZÉåÉNÉ^ÇÕÇ«ÇÃÇÊǧDžǵǃégÇ¡ÇΩÇÁÇÊÇ¢ÇÃÇ≈ǵÇÂǧǩÅB
A: DZÇÍÇÁÇÃÉZÉåÉNÉ^ÇÕÉTÉEÉìÉhèoóÕÉRÉìÉ|Å[ÉlÉìÉgÇ≈égópÇ∑ÇÈLJÇÃÇ≈ÅAÉÜÅ[ÉUÇ™ï∑DZǶÇÈÉ\Å[ÉXÇëIëǵǃÅAǪÇÍÇÉfÉtÉHÉãÉgÇÃò^âπópÉ\Å[ÉXÇΔǵNjÇ∑ÅBDZÇÃÉZÉåÉNÉ^ÇÕÉTÉEÉìÉhèoóÕÉRÉìÉ|Å[ÉlÉìÉgÇæÇØÇ≈égópÇ∑ÇÈLJÇÃÇ»ÇÃÇ≈ÅADZÇÃÇΩÇflÇ…ÉTÉEÉìÉhÉ`ÉÉÉlÉãÇégópÇ∑ÇÈïKóvÇÕdžÇËÇ‹ÇπÇÒÅB
siMonitorAvailable ÉZÉåÉNÉ^ÇÕÅAsiOSTypeInputAvailable ìØólÅASoundInfoList Çï‘ǵNjÇ∑ÅBDZÇÍÇÕ short ÇΔ Handle ÇÃç\ë¢ëÃÇ≈Ç∑ÅBDZÇÃÉnÉìÉhÉãÇ…ÇÕÉÇÉjÉ^â¬î\Ç»ì¸óÕÉ\Å[ÉXÇÃ
OSTypes ÇÃîzóÒÇ™ä‹Ç‹ÇÍÇ‹Ç∑ÅBSoundInfoList ç\ë¢ëÃÇÃëÄçÏï˚ñ@ÇÃè⁄ç◊DžǬǢǃÇÕÅAÅuQ&A
SND12ÅvÇéQèΔǵǃÇ≠ÇæÇ≥Ç¢ÅB
ÉTÉEÉìÉhèoóÕÉRÉìÉ|Å[ÉlÉìÉgÇíTǵÅAsiMonitorSource Ç®ÇÊÇ— siMonitorAvailable ÉZÉåÉNÉ^ÇégópÇ∑ÇÈï˚ñ@Çé¶Ç∑ÅAÉTÉìÉvÉãÉRÅ[ÉhÇà»â∫Ç…åfç⁄ǵNjÇ∑ÅB
#include <Sound.h>#include <Errors.h>#include <Memory.h>
// égópâ¬î\Ç»ÉÇÉjÉ^É\Å[ÉXÇéÊìæÇµÅAǪÇÍǺÇÍÇÃñºëOÇí≤Ç◊ÅA
// Ç«ÇÃÉ\Å[ÉXÇ™ÉAÉNÉeÉBÉuÇ©í≤Ç◊ÅAÇ≥NjǥNjǻÉ\Å[ÉXÇê›íËÇ∑ÇÈ
// ä»íPÇ»ÉAÉvÉäÉPÅ[ÉVÉáÉì
void main(void) {
NumVersionVariant smVersion;
ComponentResult err;
OSType source;
SoundInfoList monitorList;
Component device;
ComponentDescription looking;
smVersion.parts = SndSoundManagerVersion();
// SoundComponentGet/SetInfo ä÷êîÇÕÅASound Manager 3.1 à»ç~Ç≈ÇÃÇ›óòópâ¬î\ÅB
// System 7.5 à»ç~Ç≈ìÆçÏǵǃǢÇÈDZÇΔÇ™ÇÌǩǡǃǢÇÈèÍçáÇÕÅA
// SM ÉoÅ[ÉWÉáÉìÇÃÉ`ÉFÉbÉNÇÕè»ó™â¬î\ÅB
if (smVersion.whole >= 0x03100000) {
looking.componentType = kSoundOutputDeviceType;
looking.componentSubType = 0;
looking.componentManufacturer = kAppleManufacturer;
looking.componentFlags = 0;
looking.componentFlagsMask = 0;
device = FindNextComponent (0, &looking);
// égópâ¬î\Ç»ÉÇÉjÉ^É\Å[ÉXÇÃÉäÉXÉgÇéÊìæÇ∑ÇÈï˚ñ@Çà»â∫Ç…é¶Ç∑
// (ÉÇÉjÉ^É\Å[ÉXÇ™ÉTÉ|Å[ÉgÇ≥ÇÍǃǢÇÈǩLJí≤Ç◊ÇÈ)
// ǪÇÃåãâ ÅAäeÉ\Å[ÉXÇà OSTypes ÇÃÉäÉXÉgÇ™ìæÇÁÇÍÇÈ
// (džÇΔÇ≈ÉnÉìÉhÉãÇÃîjä¸ÇñYÇÍǻǢÇÊǧDž)
err = GetSoundOutputInfo(device, siMonitorAvailable, &monitorList);
if (err != noErr) // ÉÇÉjÉ^É\Å[ÉXÇ™ÉTÉ|Å[ÉgÇ≥ÇÍǃǢǻǢÇΩÇflÅAé©ï™Ç≈çsǧÅB
goto Exit;
DisposeHandle(monitorList.infoHandle); // ï‘Ç≥ÇÍÇΩÉnÉìÉhÉãÇîjä¸Ç∑ÇÈÇÃÇñYÇÍǻǢDZÇΔ
// Ç«ÇÃÉ\Å[ÉXÇ™ÉÇÉjÉ^Ç≥ÇÍǃǢÇÈÇÃÇ©Çí≤Ç◊ÇÈ
GetSoundOutputInfo(device, siMonitorSource, &source);
// CD ÇÉÇÉjÉ^É\Å[ÉXÇΔǵǃê›íËÇ∑ÇÈ (Ç∑Ç≈Ç…ë∂ç›Ç∑ÇÈèÍçáÅBerr <> noErr ÇæÇΔë∂ç›ÇµÇ»Ç¢)
err = SetSoundOutputInfo(device, siMonitorSource, (void *)kCDSource);
// çƒìxÉÇÉjÉ^É\Å[ÉXÇí≤Ç◊ÅAè„ÇÃê›íËÇ™ã@î\ǵÇΩÇ©ämîFÇ∑ÇÈÅB
err = GetSoundOutputInfo(device, siMonitorSource, &source);
}
Exit:
return;
}
ÉZÉåÉNÉ^ÇÕ Universal Headers 3.1 à»ç~Ç≈ÅAéüÇÃÇÊǧDžíËã`Ç≥ÇÍǃǢNjÇ∑ÅB
siMonitorAvailable = FOUR_CHAR_CODE('mnav'),
siMonitorSource = FOUR_CHAR_CODE('mons'),
-- Mark Cookson
devsupport@apple.com
[ Technical Q&A's : Graphics & Media : QuickTime : Sound : SND13 ]
|